package com.bjc.base.utils;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StringUtil {

	/**
	 * 检查字符串是否为空或者空字符串
	 * 
	 * @param 要检查的字符串
	 * @return 被检查的字符串为空或空字符串返回true, 否则返回 false
	 */
	public static boolean isNullOrEmpty(String str) {
		if (str == null || "".equals(str)) {
			return true;
		} else {
			return false;
		}
	}

	public static String getNoNullEmpty(String str) {
		if (isNullOrEmpty(str)) {
			return "";
		} else {
			return str;
		}
	}

	/**
	 * 四舍五入保留两位小数
	 * 
	 * @param hours
	 * @return
	 */
	public static double get2Double(Double num) {
		return Math.round(num * 100) / 100.0;
	}

	/**
	 * 判断一个字符串是否为小数或整数
	 * 
	 * @param str
	 * @return
	 */
	public static boolean isNumber(String str) {
		// 正整数
		final String number1 = "^[0-9]*[1-9][0-9]*$";
		final String number2 = "^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$";
		Pattern pattern1 = Pattern.compile(number1);
		// 正小数
		final Pattern pattern2 = Pattern.compile(number2);
		Matcher isNum1 = pattern1.matcher(str);
		Matcher isNum2 = pattern2.matcher(str);
		if (isNum1.matches() || isNum2.matches()) {
			return true;
		}
		return false;
	}

	/**
	 * NumberFormat is the abstract base class for all number formats. This
	 * class provides the interface for formatting and parsing numbers.
	 * 
	 * @param d
	 * @return
	 */
	public static String formatDouble3(double d) {
		DecimalFormat df = new DecimalFormat("######0.00");
		// NumberFormat nf = NumberFormat.getNumberInstance();
		// // 保留两位小数
		// nf.setMaximumFractionDigits(2);
		// // 如果不需要四舍五入，可以使用RoundingMode.DOWN
		// nf.setRoundingMode(RoundingMode.DOWN);
		return df.format(d);
	}

	public static Double formatDoubleWithNum(double d, int num) {
		BigDecimal bg = new BigDecimal(d);
		return bg.setScale(num, BigDecimal.ROUND_HALF_UP).doubleValue();
	}

	public static boolean equals(String str1, String str2) {
		return str1 == null ? str2 == null : str1.equals(str2);
	}

	/**
	 * 获取分割后的某断字符串
	 * 
	 * @author: 许自辉
	 * @date: 2018年7月10日 下午8:20:38
	 * @param value
	 *            传过来的字符串
	 * @param splistStr
	 *            要风格的符号
	 * @param index
	 *            要获取第几个分割的字符串，0开始
	 */
	public static String getSplitSubstring(String value, String splitStr, int index) {
		String result = value;
		if (!isNullOrEmpty(result)) {
			String[] strs = result.split("\\" + splitStr);
			result = strs[index];
		}
		return result;
	}

}
